package com.puntodonna.fogliocassa.client.gin;

import com.google.inject.Singleton;
import com.gwtplatform.mvp.client.gin.AbstractPresenterModule;
import com.gwtplatform.mvp.client.gin.DefaultModule;
import com.puntodonna.fogliocassa.client.place.ClientPlaceManager;
import com.puntodonna.fogliocassa.client.place.DefaultPlace;
import com.puntodonna.fogliocassa.client.place.NameTokens;
import com.puntodonna.fogliocassa.client.resources.FoglioCassaResources;
import com.puntodonna.fogliocassa.client.app.place.fogliocassa.FoglioCassaPresenter;
import com.puntodonna.fogliocassa.client.app.place.fogliocassa.FoglioCassaView;
import com.puntodonna.fogliocassa.client.app.place.login.LoginPresenter;
import com.puntodonna.fogliocassa.client.app.place.login.LoginView;
import com.puntodonna.fogliocassa.client.app.presenter.header.HeaderPresenter;
import com.puntodonna.fogliocassa.client.app.presenter.header.HeaderView;
import com.puntodonna.fogliocassa.client.app.presenter.main.MainPresenter;
import com.puntodonna.fogliocassa.client.app.presenter.main.MainView;

public class ClientModule extends AbstractPresenterModule {

	@Override
	protected void configure() {
		install(new DefaultModule(ClientPlaceManager.class));

		bindConstant().annotatedWith(DefaultPlace.class).to(NameTokens.login);

		bind(FoglioCassaResources.class).in(Singleton.class);

		bindPresenter(MainPresenter.class, MainPresenter.MyView.class, MainView.class, MainPresenter.MyProxy.class);

		bindPresenter(HeaderPresenter.class, HeaderPresenter.MyView.class, HeaderView.class, HeaderPresenter.MyProxy.class);

		bindPresenter(LoginPresenter.class, LoginPresenter.MyView.class, LoginView.class, LoginPresenter.MyProxy.class);

		bindPresenter(FoglioCassaPresenter.class, FoglioCassaPresenter.MyView.class, FoglioCassaView.class, FoglioCassaPresenter.MyProxy.class);

	}
}
